<!DOCTYPE html>
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>Component Test</title>
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <script src="./vue.js"></script>>
    </head>
    <body>
        <!--[if lt IE 7]>
            <p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="#">upgrade your browser</a> to improve your experience.</p>
        <![endif]-->
        
        <div id="root">
            <number-comp ref="num1" @change="handleChange"></number-comp> + <number-comp ref="num2" @change="handleChange"></number-comp> = <span>{{total}}</span>
        </div>

        <script>
            var numberComp = {
                template: '<input v-model="number" @keyup="onInput" />',
                data: function(){
                    return {
                        number: 0
                    }
                },
                methods: {
                    onInput: function(){
                        this.$emit('change')
                    }
                }
            }

            var vm = new Vue({
                el: "#root",
                data: {
                    total: 0
                },
                components: {
                    numberComp: numberComp
                },
                methods: {
                    handleChange: function(){
                        this.total = parseFloat(this.$refs.num1.number) + parseFloat(this.$refs.num2.number)
                    }
                }
            })
        </script>
    </body>
</html>